package com.cango.student.algorithm;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * 一副从1到n的牌，每次从牌堆顶取一张放桌子上，再取一张放牌堆底，直到手上没牌，最后桌子上的牌是从1到n有序，设计程序，输入n，输出牌堆的顺序数组。
 */
public class Demo {
    public static void main(String[] args) {
        test(9);
    }

    public static void test(int n){
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        int[] table = getChangeResult(n);
        printRes(table);
        for(int i=0; i<n; i++){
            // 数组下标 值
            map.put(table[i], i+1);
        }
        int[] res = new int[n];
        for(int j=0; j<n; j++){
            // 获取值
            res[j] = map.get(j+1);
        }
        printRes(res);
    }

    private static void printRes(int[] res) {
        for(int result : res){
            System.out.print(result+" ");
        }
    }

    // 顺序的，根据题目，生成新的数组
    private static int[] getChangeResult(int n){
        ArrayList<Integer> list = new ArrayList<>();
        int[] table = new int[n];
        int temp = 0;
        int index = 0;
        for(int i=0;i<n;i++){
            list.add(i+1);
        }
        while(list.size()>0){
            //step 1
            temp = list.get(0);
            table[index] = temp;
            index++;
            list.remove(0);
            if(list.size()==0)
                break;
            //step 2
            list.add(list.get(0));
            list.remove(0);
        }
        return table;
    }



}
